#!/bin/bash
# KidsBuddy 1.0 环境设置脚本
# 用于初始化开发或生产环境

set -e

# 输出带颜色的文本
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color

echo -e "${GREEN}=== KidsBuddy 1.0 环境设置脚本 ===${NC}"
echo "初始化环境..."

# 检查Python版本
python_version=$(python3 --version 2>&1 | cut -d ' ' -f 2)
required_version="3.8.0"

echo "检测到Python版本: $python_version"
if [[ "$(printf '%s\n' "$required_version" "$python_version" | sort -V | head -n1)" != "$required_version" ]]; then
    echo -e "${RED}错误: 需要Python $required_version 或更高版本${NC}"
    exit 1
fi

# 创建必要的目录
echo "创建必要的目录..."
mkdir -p logs
mkdir -p data
mkdir -p models

# 创建虚拟环境
if [ ! -d "venv" ]; then
    echo "创建虚拟环境..."
    python3 -m venv venv
    echo -e "${GREEN}虚拟环境已创建${NC}"
else
    echo -e "${YELLOW}虚拟环境已存在${NC}"
fi

# 激活虚拟环境
echo "激活虚拟环境..."
source venv/bin/activate

# 安装依赖
echo "安装依赖..."
pip install --upgrade pip
pip install -e .

# 如果有开发依赖，安装它们
if [ "$1" == "dev" ]; then
    echo "安装开发依赖..."
    pip install -e ".[dev]"
fi

# 下载必要的模型
echo "检查模型文件..."
models_dir="models"
yolo_model="$models_dir/yolov8n.pt"

if [ ! -f "$yolo_model" ]; then
    echo "下载YOLOv8模型..."
    mkdir -p "$models_dir"
    pip install ultralytics
    python -c "from ultralytics import YOLO; YOLO('yolov8n.pt').save('$yolo_model')"
else
    echo -e "${YELLOW}YOLOv8模型已存在${NC}"
fi

# 创建示例配置
echo "创建配置文件..."
config_dir="config"
config_file="$config_dir/user_config.json"

if [ ! -f "$config_file" ]; then
    mkdir -p "$config_dir"
    cat > "$config_file" << EOF
{
    "student_id": "student_001",
    "session_auto_save": true,
    "alert_sound_enabled": true,
    "camera_preview": true
}
EOF
    echo -e "${GREEN}配置文件已创建: $config_file${NC}"
else
    echo -e "${YELLOW}配置文件已存在: $config_file${NC}"
fi

echo -e "${GREEN}环境设置完成!${NC}"
echo "使用方法:"
echo "  1. 激活虚拟环境: source venv/bin/activate"
echo "  2. 运行演示: python -m examples.demo"
echo "  3. 启动系统: python -m kidsbuddy"
echo -e "${GREEN}祝使用愉快!${NC}"